/*
 * @Author: liuying 247220246@qq.com
 * @Date: 2025-03-06 10:03:08
 * @LastEditors: liuying 247220246@qq.com
 * @LastEditTime: 2025-03-13 15:21:24
 * @FilePath: \my-book-react\src\utils\storage.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
const storage = {
  /**
   * 从localStorage中获取指定键的值
   *
   * 此函数尝试从localStorage中获取与给定键关联的值如果该值存在且不为空，
   * 则将其解析为JavaScript对象并返回否则，返回null
   *
   * @param key 要从localStorage中获取的值的键
   * @returns 解析后的值，如果键不存在或值为null，则返回null
   */
  get(key: string) {
    // 从localStorage中获取与键关联的值，可能为字符串或null
    const json: string | null = localStorage.getItem(key);
    // 检查获取的值是否不为空
    if (json) {
      // 值存在且不为空时，将其解析为JavaScript对象并返回
      return JSON.parse(json);
    }
    // 如果值为空或键不存在，则返回null
    return null;
  },
  set(key: string, value: unknown) {
    localStorage.setItem(key, JSON.stringify(value));
  },
  remove(key: string) {
    localStorage.removeItem(key);
  },
  clear() {
    localStorage.clear();
  },
};
export default storage;
